import cvRequest from "../index";
import {
  CustomerCtx, DelayQueuePage,
  PageCustomerDataQueue,
  PageDataQueue, PageDelayDataQueue,
  ProducerCtx,
  QueryQueuePage,
  SendMessageReq,
  SubscribeCtx
} from "./type";

/**
 * 查询所有队列名称
 */
export function findAllQueueRequest(name?: string) {
  return cvRequest.get<string[]>({
    url: `/broker/count/queue/name?name=${name}`
  })
}

/**
 * 添加队列
 * @param name 队列名称
 */
export function addQueueRequest(name: string) {
  return cvRequest.get<string[]>({
    url: `/broker/add/queue/${name}`
  })
}

/**
 * 删除队列
 * @param name 队列名称
 */
export function deleteQueueRequest(name: string) {
  return cvRequest.delete<string[]>({
    url: `/broker/delete/queue/name?name=${name}`
  })
}


/**
 * 查询未消费队列内容
 * @param query 队列页数、每页条数、队列名称
 */
export function findQueueByNameRequest(query: QueryQueuePage) {
  return cvRequest.post<PageDataQueue>({
    url: `/broker/queue/content/${query.page}/${query.size}`,
    data: query.req
  })
}

/**
 * 查询已消费队列内容
 * @param query 队列页数、每页条数、队列名称
 */
export function findQueueCustomerByNameRequest(query: QueryQueuePage) {
  return cvRequest.post<PageCustomerDataQueue>({
    url: `/broker/customer/content/${query.page}/${query.size}`,
    data: query.req
  })
}


/**
 * 查询延时队列内容
 * @param query 队列页数、每页条数、队列名称
 */
export function findQueueDelayByNameRequest(query: DelayQueuePage) {
  return cvRequest.post<PageDelayDataQueue>({
    url: `/broker/delay/content/${query.page}/${query.size}?name=${query.name}`,
  })
}

/**
 * 发送消息
 * @param message 队列名称 消息内容
 */
export function sendMsgRequest(message: SendMessageReq) {
  return cvRequest.post({
    url: `/broker/add/message`,
    data: message
  })
}

/**
 * 获取所有生产者连接
 */
export function findProducerCtxRequest() {
  return cvRequest.get<ProducerCtx[]>({
    url: `/broker/producer/ctx`
  })
}

/**
 * 获取所有消费者连接
 * @param name 队列名称
 */
export function findCustomerCtxRequest(name?: string) {
  return cvRequest.get<CustomerCtx[]>({
    url: `/broker/customer/ctx?name=${name}`
  })
}

/**
 * 获取所有订阅者连接
 */
export function findSubscribeCtxRequest() {
  return cvRequest.get<SubscribeCtx[]>({
    url: `/broker/subscribe/ctx`
  })
}
